/**
 * 
 * @author Ivam Henrique Marques dos Santos
 *         email: ivam.santos@skytef.com.br
 *         skype: ivam.santos.skytef
 *         telefone: +55 11 96214-7543
 */

package br.skytef.stmanager.daos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import br.skytef.stmanager.entities.UsuarioEntity;
import br.skytef.stmanager.utils.Pool;
/**
 * 
 * Class DOA UsuarioDao
 */
public class UsuarioDao {
	/**
	 * Variável para conexão, obtido através de um Pool(br.skytef.stmanager.utils.Pool)
	 */
	private static Connection conexao = null;	
	
	/**
	 * Inserir Usuário
	 * @param usuario
	 */
	public void inserir(UsuarioEntity usuario){
		try {
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			st.executeUpdate("INSERT INTO usuario "+
					"(nome, email, telefone, skype, login, senha,status, tipo)"+
					"VALUES('"+
					usuario.getNome()+"','"+
					usuario.getEmail()+"','"+
					usuario.getTelefone()+"','"+
					usuario.getSkype()+"','"+
					usuario.getLogin()+"','"+
					usuario.getSenha()+"','"+
					usuario.isStatus()+"','"+
					usuario.getTipo()+"'"+
					");");			
			conexao.close();
		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		}
	}

	/**
	 * Consultar usuário na base de dados pelo username (login).
	 * @param username
	 * @return
	 */
	public UsuarioEntity buscar(String username) {
		UsuarioEntity usuario = null;
		try {

			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM usuario WHERE login = '"+ username +"' ORDER BY nome;");
			if (rs.next()) {
				do {                      
					usuario = new UsuarioEntity();
					usuario.setId(rs.getInt("id"));
					usuario.setNome(rs.getString("nome"));
					usuario.setEmail(rs.getString("email"));
					usuario.setTelefone(rs.getString("telefone"));
					usuario.setSkype(rs.getString("skype"));
					usuario.setLogin(rs.getString("login"));
					usuario.setSenha(rs.getString("senha"));
					usuario.setStatus(rs.getBoolean("status"));
					usuario.setTipo(rs.getString("tipo"));
					
				} while (rs.next());
			}
			conexao.close();			
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		}
		return usuario;
	}
	
	
	
	public void alterar(UsuarioEntity ce){
		try
		{
		conexao = Pool.getConnection();
		String query = "UPDATE usuario SET  senha = ?" +
				 " WHERE id = ?";
		
		PreparedStatement preparedStmt = conexao.prepareStatement(query);
		preparedStmt.setString 		(1, ce.getSenha());
		preparedStmt.setInt 		(2, ce.getId());
		preparedStmt.execute();			
		conexao.close();
	
		
	} catch (SQLException e) {
		System.out.println("SQL erro: "+ e);
	} catch (Exception e) {
		System.out.println("Geral erro: "+ e);
	}
		
	}
}

		
